package ${table.basePackage}.mapstruct;

import org.mapstruct.Mapper;
import java.util.List;
import ${table.basePackage}.entity.${table.entityName};
import ${table.basePackage}.dto.${table.entityName}DTO;
import ${table.basePackage}.vo.${table.entityName}VO;

/**
 * ${table.comment!(table.entityName!'')} - 对象映射接口
 * 
 * 遵循Kexio开发规范：
 * - 使用MapStruct进行对象转换，避免手写映射代码
 * - DTO转Entity：用于接口参数转换
 * - Entity转VO：用于接口返回值转换
 * - 自动处理字段映射，减少样板代码
 * 
 * 使用方式：
 * ```java
 * @Autowired
 * private ${table.entityName}MapStruct ${lowerEntity}MapStruct;
 * 
 * // DTO转Entity
 * ${table.entityName} entity = ${lowerEntity}MapStruct.toEntity(dto);
 * 
 * // Entity转VO
 * ${table.entityName}VO vo = ${lowerEntity}MapStruct.toVO(entity);
 * ```
 * 
 * @author ${user.name!"系统"}
 * @since ${now?string('yyyy-MM-dd HH:mm:ss')}
 */
@Mapper(componentModel = "spring")
public interface ${table.entityName}MapStruct {

    /**
     * DTO转Entity
     * 用于接口参数转换为实体对象
     *
     * @param dto 数据传输对象
     * @return 实体对象
     */
    ${table.entityName} toEntity(${table.entityName}DTO dto);

    /**
     * Entity转VO
     * 用于实体对象转换为视图对象
     *
     * @param entity 实体对象
     * @return 视图对象
     */
    ${table.entityName}VO toVO(${table.entityName} entity);

    /**
     * Entity列表转VO列表
     * 用于批量转换
     *
     * @param entities 实体对象列表
     * @return 视图对象列表
     */
    List<${table.entityName}VO> toVOList(List<${table.entityName}> entities);
}


